SQL INSERT v procedure -- sorry, pred chvilou som to omylom poslal ako odpoved na unicode
Otázka od: Ivan Kozak
2. 11. 2004 10:01
ako odpoved na unicode
Mozno je tato otazka jednoducha, mozno je to len nedostatok skusenosti s
SQL, ale potrebujem to vyriesit, takze ak niekto mi viete poradit, napiste
prosim.
Vsetko popisujem pre Interbase 7.1 a D7.
Chcel som, aby sa po nahrati noveho zaznamu v tabulke T1 automaticky
vygeneroval zaznam do tabulky T2, a to na urovni SQL (asi podobne, ako keby
som mal triggri after insert na T1 v nom zadam SQL prikaz insert do T2).
Zial primo z triggeru som nemohol generovat, pretoze do T2 potrebujem i
dalsie udaje, nenachadzajuce sa priamo v T1.
Naivnym riesenim bolo vytvorit priceduru, do ktorej cez parametre poslem co
treba a bude obsahovat len jediny prikaz: INSERT do tabulky T1. Z programu
by som tuto proceduru potom volal cez komponentu TIBStoredProcedure.
Zial absolutne to nefunguje.
Pokial takto vytvorenu SQL proceduru spustim z databazy (t.j. mimo program
v D7), tak sa nevytvori nova veta, zato sa vsak generator tabulky T2 (kde
generujem identifikatro zaznamu) posunie o 2 (namiesto o 1 ako by to malo
byt spravne)., t.j. vyzera to ako keby ten insert prebehol dvakrat.
A ak tu SQL proceduru spustim z programu (pomocou TIBStoredProcedure), tak
sa ani nevytvori veta, ani neposunie generator tabulky.
Mam matne podozrenie, ze problem by mohol suvisiet s transakciou, ale
neviem, ako ju dostat do hry (na urovni SQL).